import { TIME_96 } from '@/pages/ETrade/components/helper';
import { baseChart, scatterChart } from './components/charts';
import { default as getColumns } from './components/table';
import { getCssVariableValue } from '@/utils/utils';

// 基础业务配置（省份若需特殊处理，别在这儿改，模块化新文件）
const tableColumns1 = getColumns();
export const getChildren = (_data) => {
  if (!_data) return [];
  const [res1, res2, res3] = _data;
  const res1Data = res1?.data || []; // 其他
  const tableData = res2?.data || []; // 表格
  const scatterData = res3?.data; // 散点
  if (!res1Data.length) return [];
  let xData = [];
  let marker1 = []; // 差向一致时段
  let marker2 = []; // 差向相异时段
  const chartData = res1Data.map((item, i) => {
    let temp = { ...item };
    temp.x = `${item.date.replace(/[-]/g, '')} ${TIME_96[i]}`;
    xData.push(temp.x);
    return temp;
  });
  // 计算面积图
  const len = chartData.length;
  for (let i = 0; i < len; i++) {
    const { tag1 } = chartData[i];
    let startI = i;
    let endI = i + 1;
    while (chartData[endI]?.tag1 === tag1) {
      endI++;
    }
    const markItem = [{ xAxis: chartData[startI]?.x }, { xAxis: chartData[endI]?.x }];
    tag1 === 1 ? marker1.push(markItem) : marker2.push(markItem);
    i = endI - 1;
  }

  return [
    {
      title: '价差成因分析',
      tooltip: '依照模型对现货价差的成因进行分类，以便用户依据原因进行针对性的价差预测及风险规避。',
      type: 'table',
      props: {
        columns: tableColumns1,
        dataSource: tableData,
      },
    },
    /** */
    {
      title: '现货出清价差（实时-日前）',
      tooltip: '',
      type: 'chart',
      props: {
        group: 'AnalysisOfPriceDiff',
        option: baseChart({
          dataset: {
            source: chartData,
            dimensions: ['x', 'clearingPriceDifference', 'statementPriceDifference'],
          },
          series: [
            { type: 'line', name: '现货价差(修正前)', color: '#F4903D' },
            { type: 'dashed', name: '现货价差(修正后)', color: '#F9DABC' },
          ],
        }),
      },
    },
    /** */
    {
      title: '竞价空间差（实时-日前）',
      tooltip:
        '这里的差值为实时竞价空间-日前竞价空间结果。“竞价空间”是指需以市场化竞价结果进行结算的负荷部分，由于各省披露数据有限，这里以“省内负荷&联络线-新能源”进行代替。',
      type: 'chart',
      props: {
        group: 'AnalysisOfPriceDiff',
        option: baseChart({
          dataset: {
            source: chartData,
            dimensions: ['x', 'biddingSpaceDeviation'],
          },
          series: [{ type: 'bar', name: '(实时-日前)竞价空间', color: '#5E92F6' }],
        }),
      },
    },
    /** */
    {
      title: '竞价空间与价格相关曲线',
      tooltip:
        '不同竞价空间下的出清价格可以一定程度上反映出全市场的市场化发电机组报价曲线，在披露数据准确且无外力影响的情况下，实时与日前规律应当一致，因此该曲线的一致性也可用作判断价差形成有无非市场因素干扰的标准。',
      type: 'chart',
      props: {
        option: scatterChart(scatterData),
      },
    },
    /** */
    {
      title: '竞价空间差与价差一致性分析',
      tooltip:
        '当无其他非市场因素介入时，现货出清价差主要由竞价空间差引起，二者为正相关关系，二者的实时日前差应同向；当二者方向相反时，一般可以认为存在非市场因素扰动，详见价差成因分析。',
      type: 'chart',
      props: {
        group: 'AnalysisOfPriceDiff',
        option: baseChart({
          grid: { top: 24, left: 48, bottom: 72, right: 48 },
          yAxis: [
            {
              type: 'value',
              name: '竞价空间差',
              nameTextStyle: {
                color: getCssVariableValue('--chart-font-color'),
              },
              axisLabel: {
                color: getCssVariableValue('--chart-font-color'),
              },
              splitLine: {
                lineStyle: {
                  color: getCssVariableValue('--chart-y-line'),
                },
              },
            },
            {
              type: 'value',
              name: '价差',
              nameTextStyle: {
                color: getCssVariableValue('--chart-font-color'),
              },
              axisLabel: {
                color: getCssVariableValue('--chart-font-color'),
              },
              splitLine: {
                lineStyle: {
                  color: getCssVariableValue('--chart-y-line'),
                },
              },
            },
          ],
          xAxis: [
            {
              type: 'category',
              data: xData,
              formatter: (v) => v.split(' ')[1],
              axisLine: {
                lineStyle: {
                  color: getCssVariableValue('--chart-x-line'),
                },
              },
              axisTick: {
                lineStyle: {
                  color: getCssVariableValue('--chart-x-line'),
                },
              },
              axisLabel: {
                color: getCssVariableValue('--chart-font-color'),
              },
              axisPointer: {
                type: 'line',
                lineStyle: {
                  type: 'solid',
                  color: getCssVariableValue('--chart-x-line'),
                },
              },
            },
          ],
          series: [
            {
              type: 'line',
              name: '实时-日前价差',
              color: '#F5BE15',
              props: { yAxisIndex: 1 },
              data: chartData.map((x) => x.clearingPriceDifference),
            },
            {
              type: 'bar',
              name: '(实时-日前)竞价空间',
              color: '#5E92F6',
              data: chartData.map((x) => x.biddingSpaceDeviation),
              props: { stack: 'A' },
            },
            {
              type: 'bar',
              name: '差向一致时段',
              color: '#233732',
              data: [],
              props: {
                stack: 'A',
                markArea: { data: marker1, itemStyle: { color: '#30D485', opacity: 0.1 } },
              },
            },
            {
              type: 'bar',
              name: '差向相异时段',
              color: '#4E2E2E',
              data: [],
              props: {
                stack: 'A',
                markArea: { data: marker2, itemStyle: { color: '#FD4F43', opacity: 0.1 } },
              },
            },
          ],
        }),
      },
    },
    /** */
    {
      title: '竞价空间差额组成分析',
      tooltip:
        '竞价空间的偏差是由供需多种因素共同作用形成的，在不同时段里各个因素的作用大小存在差异，本图着重分析各个因素在不同时段的影响大小，辅助用户对未来进行分时更精确的预测。',
      type: 'chart',
      props: {
        group: 'AnalysisOfPriceDiff',
        option: baseChart({
          dataset: {
            source: chartData,
            dimensions: [
              'x',
              'biddingSpaceDeviation',
              'newEnergyDeviation',
              'tieLineDeviation',
              'provincialLoadDeviation',
            ],
          },
          series: [
            { type: 'line', name: '+(实时-日前)竞价空间', color: '#F5BE15' },
            { type: 'bar', name: '-(实时-日前)新能源差', color: '#5E92F6', props: { stack: 'B' } },
            { type: 'bar', name: '+(实时-日前)联络线差', color: '#67DCAB', props: { stack: 'B' } },
            {
              type: 'bar',
              name: '+(实时-日前)省内负荷差',
              color: '#64779B',
              props: { stack: 'B' },
            },
          ],
        }),
      },
    },
  ];
};
